package com.linxiao.hrcrm.service.impl;

import java.util.List;

import cn.hutool.core.collection.CollUtil;
import com.linxiao.hrcrm.vo.ArticleTypeVO;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.linxiao.hrcrm.mapper.ArticleTypeMapper;
import com.linxiao.hrcrm.domain.ArticleType;
import com.linxiao.hrcrm.service.IArticleTypeService;

/**
 * 文章类型Service业务层处理
 *
 * @author zhoudong
 * @date 2023-12-25
 */
@Service
public class ArticleTypeServiceImpl implements IArticleTypeService {
    @Autowired
    private ArticleTypeMapper articleTypeMapper;

    /**
     * 查询文章类型
     *
     * @param id 文章类型主键
     * @return 文章类型
     */
    @Override
    public ArticleType selectArticleTypeById(Long id) {
        return articleTypeMapper.selectArticleTypeById(id);
    }

    /**
     * 查询文章类型列表
     *
     * @param articleType 文章类型
     * @return 文章类型
     */
    @Override
    public List<ArticleType> selectArticleTypeList(ArticleType articleType) {
        return articleTypeMapper.selectArticleTypeList(articleType);
    }

    /**
     * 新增文章类型
     *
     * @param articleType 文章类型
     * @return 结果
     */
    @Override
    public int insertArticleType(ArticleType articleType) {
        articleType.setCreateTime(DateUtils.getNowDate());
        return articleTypeMapper.insertArticleType(articleType);
    }

    /**
     * 修改文章类型
     *
     * @param articleType 文章类型
     * @return 结果
     */
    @Override
    public int updateArticleType(ArticleType articleType) {
        return articleTypeMapper.updateArticleType(articleType);
    }

    /**
     * 批量删除文章类型
     *
     * @param ids 需要删除的文章类型主键
     * @return 结果
     */
    @Override
    public int deleteArticleTypeByIds(Long[] ids) {
        return articleTypeMapper.deleteArticleTypeByIds(ids);
    }

    /**
     * 删除文章类型信息
     *
     * @param id 文章类型主键
     * @return 结果
     */
    @Override
    public int deleteArticleTypeById(Long id) {
        return articleTypeMapper.deleteArticleTypeById(id);
    }

    /**
     * 获取所有的标签
     * @param articleTypeVO
     * @return
     */
    @Override
    public List<ArticleTypeVO> selectAll(ArticleTypeVO articleTypeVO) {
        List<ArticleTypeVO> articleTypeVOS = articleTypeMapper.selectAll(articleTypeVO);
        if (CollUtil.isNotEmpty(articleTypeVOS)) {
            articleTypeVOS.parallelStream().forEach(at -> {
                ArticleType query = new ArticleType();
                query.setParentId(at.getId());
                List<ArticleType> articleTypes = selectArticleTypeList(query);
                if (CollUtil.isNotEmpty(articleTypes)) {
                    at.setChilds(articleTypes);
                }
            });
        }
        return articleTypeVOS;
    }
}
